package com.spsoft.vatoutinv.model.vo.vmsfulloutinvoice;

import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.spsoft.vatoutinv.annotation.Translate;
import com.spsoft.vatoutinv.constants.CommonConstant;
import com.spsoft.vatoutinv.constants.DictConstant;
import com.spsoft.vatoutinv.constants.TranslateConstant;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;

/**
 * @author wangy
 * @date 2023/12/7 9:50
 */
@Data
public class VmsFullOutInvoicePageVO {

    @ApiModelProperty(value = "发票主键;发票表主键")
    private Long foidid;

    @ApiModelProperty(value = "发票票种;01：数电专票 02：数电普票 004：纸质专票 007：纸质普票 026：电子普票")
    @Translate(type = TranslateConstant.DICT, value = DictConstant.VMS_FPLX)
    private String fppz;

    @ApiModelProperty(value = "发票状态;0：正常，2：作废，3：已红冲，7：部分红冲，8：全额红冲")
    @Translate(type = TranslateConstant.DICT, value = DictConstant.VMS_FPZT)
    private String fpzt;

    @ApiModelProperty(value = "发票代码")
    private String fpdm;

    @ApiModelProperty(value = "发票号码")
    private String fphm;

    /**
     * 红字确认单申请模块，返回前端为蓝字发票代码、蓝字发票号码
     */
    @ApiModelProperty(value = "蓝字发票代码")
    private String lzfpdm;

    @ApiModelProperty(value = "蓝字发票号码")
    private String lzfphm;

    @ApiModelProperty(value = "（购买方）统一社会信用代码/纳税人识别号/身份证件号码")
    private String gmfnsrsbh;

    @ApiModelProperty(value = "（购买方）名称")
    private String gmfmc;

    @ApiModelProperty(value = "（销售方）统一社会信用代码/纳税人识别号/身份证件号码")
    private String xsfnsrsbh;

    @ApiModelProperty(value = "（销售方）名称")
    private String xsfmc;

    @ApiModelProperty(value = "合计金额")
    @JsonSerialize(using = ToStringSerializer.class)
    private BigDecimal hjje;

    @ApiModelProperty(value = "合计税额")
    @JsonSerialize(using = ToStringSerializer.class)
    private BigDecimal hjse;

    @ApiModelProperty(value = "价税合计")
    @JsonSerialize(using = ToStringSerializer.class)
    private BigDecimal jshj;

    @ApiModelProperty(value = "备注")
    private String bz;

    @ApiModelProperty(value = "开票日期;格式：	yyyy-MM-dd HH:mm:ss")
    @Translate(type = TranslateConstant.DATE, format = CommonConstant.DATE_FORMAT_14)
    private Date kprq;

    @ApiModelProperty(value = "开票人")
    private String kpr;

    @ApiModelProperty(value = "上传状态;发票上传状态 0：未上传 1：上传中 2：已上传 3：上传失败")
    @Translate(type = TranslateConstant.DICT, value = DictConstant.VMS_SCZT)
    private String sczt;

    @ApiModelProperty(value = "上传结果;上传成功；	上传失败：对应乐企接口上传失败返回的数据，进行回写")
    private String scjg;

    @ApiModelProperty(value = "数据来源;0：交易数据开票 1：手工申请")
    @Translate(type = TranslateConstant.DICT, value = DictConstant.VMS_SJLY)
    private String sjly;

    @ApiModelProperty(value = "红字确认信息单编号;是否蓝字发票标志为1时，此节点有内容	红票开具时必传")
    private String hzqrxxdbh;

    @ApiModelProperty("受理流水号")
    private String sllsh;

    @ApiModelProperty(value = "对应蓝字发票号码")
    private String dylzfphm;

    @ApiModelProperty(value = "红字确认单uuid;是否蓝字发票标志为1时，此节点有内容红票开具时必传")
    private String hzqrduuid;

}
